package com.tiger.project.domain;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.tiger.common.annotation.Excel;
import com.tiger.common.core.domain.BaseEntity;
import lombok.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.format.annotation.DateTimeFormat;


/**
 * 【合同发起】对象 contract_sponsor
 *
 * @author standard
 * @date 2022-09-22
 */
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value = "contract_sponsor对象", description = "【合同发起】内容")
@Builder
@AllArgsConstructor // 全参构造
@NoArgsConstructor
public class ContractSponsor extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * ID
     */
    private Long id;

    /**
     * 合同名称
     */
    @ApiModelProperty(value = "合同名称")
    private String name;

    /**
     * 决策依据id  合同发起
     */
    @Excel(name = "决策依据id")
    @ApiModelProperty(value = "决策依据id 逗号拼接 合同发起的决策依据")
    private String decisionId;

    /**
     * 资产id
     */
    @Excel(name = "资产id")
    @ApiModelProperty(value = "资产id 用逗号拼接")
    private String assetId;

    /**
     * 资产名称
     */
    @ApiModelProperty(value = "资产名称 逗号拼接")
    private String assetName;

    /**
     * 合同发起编号
     */
    @Excel(name = "合同发起编号")
    @ApiModelProperty(value = "合同发起编号")
    private String contractSponsorNo;

    /**
     * 招租方式  1-公开招租，2-第三方机构招租，3-协议招租，4-公开自主招租，5-其他
     */
    @Excel(name = "招租方式  1-公开招租，2-第三方机构招租，3-协议招租，4-公开自主招租，5-其他")
    @ApiModelProperty(value = "招租方式  1-公开招租，2-第三方机构招租，3-协议招租，4-公开自主招租，5-其他")
    private String letWay;

    /**
     * 合同类别  1-房屋租赁合同，2-土地租赁合同
     */
    @Excel(name = "合同类别  1-房屋租赁合同，2-土地租赁合同")
    @ApiModelProperty(value = "合同类别  1-房屋租赁合同，2-土地租赁合同")
    private String contractType;

    /**
     * 出租人id
     */
    @Excel(name = "出租人id")
    @ApiModelProperty(value = "出租人id 甲方id")
    private Long lessorId;

    /**
     * 出租人名称
     */
    @Excel(name = "出租人名称")
    @ApiModelProperty(value = "出租人名称  甲方名称")
    private String lessorName;

    /**
     * 承租人id
     */
    @Excel(name = "承租人id")
    @ApiModelProperty(value = "承租人id  乙方id")
    private Long lesseeId;

    /**
     * 承租人名称
     */
    @Excel(name = "承租人名称")
    @ApiModelProperty(value = "承租人名称  乙方名称")
    private String lesseeName;

    /**
     * 产权证号
     */
    @Excel(name = "产权证号")
    @ApiModelProperty(value = "产权证号")
    private String propertyCertification;

    /**
     * 资产位置
     */
    @Excel(name = "资产位置")
    @ApiModelProperty(value = "资产位置")
    private String assetPlace;

    /**
     * 签订日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "签订日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "签订日期")
    private Date signTime;

    /**
     * 签订地点
     */
    @Excel(name = "签订地点")
    @ApiModelProperty(value = "签订地点")
    private String signPlace;

    /**
     * 租赁用途
     */
    @Excel(name = "租赁用途")
    @ApiModelProperty(value = "租赁用途")
    private String rentUse;

    /**
     * 具体用途
     */
    @Excel(name = "具体用途")
    @ApiModelProperty(value = "具体用途")
    private String specificUse;

    /**
     * 租赁面积
     */
    @Excel(name = "租赁面积")
    @ApiModelProperty(value = "租赁面积")
    private BigDecimal rentArea;


    @ApiModelProperty(value = "租赁面积查询左")
    private BigDecimal beginArea;

    @ApiModelProperty(value = "租赁面积查询右")
    private BigDecimal endArea;

    /**
     * 租赁开始日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "租赁开始日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "租赁开始日期")
    private Date rentStateTime;

    /**
     * 租赁结束日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "租赁结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "租赁结束日期")
    private Date rentEndTime;

    /**
     * 付款周期 1-月，2-季，3-半年，4-年，5-一次性付清
     */
    @Excel(name = "付款周期 1-月，2-季，3-半年，4-年，5-一次性付清")
    @ApiModelProperty(value = "付款周期 1-月，2-季，3-半年，4-年，5-一次性付清")
    private String paymentCycle;

    /**
     * 年租金
     */
    @Excel(name = "年租金")
    @ApiModelProperty(value = "年租金")
    private BigDecimal yearlyRent;

    /**
     * 物业费
     */
    @Excel(name = "物业费")
    @ApiModelProperty(value = "物业费")
    private BigDecimal propertyFee;

    /**
     * 租赁保证金或押金
     */
    @Excel(name = "租赁保证金或押金")
    @ApiModelProperty(value = "租赁保证金或押金")
    private BigDecimal cashPledge;

    /**
     * 租赁总额
     */
    @Excel(name = "租赁总额")
    @ApiModelProperty(value = "租赁总额")
    private BigDecimal rentRental;

    /**
     * 租赁时长
     */
    @Excel(name = "租赁时长")
    @ApiModelProperty(value = "租赁时长")
    private String rentDuration;

    /**
     * 租金（元/平方/年）
     */
    @Excel(name = "租金", readConverterExp = "元=/平方/年")
    @ApiModelProperty(value = "租金")
    private BigDecimal yearlyRentSquare;

    /**
     * 物业费（元/平方/天）
     */
    @Excel(name = "物业费", readConverterExp = "元=/平方/天")
    @ApiModelProperty(value = "物业费")
    private BigDecimal propertyFeeSquare;

    /**
     * 收款人
     */
    @Excel(name = "收款人")
    @ApiModelProperty(value = "收款人")
    private String payee;

    /**
     * 开户行名称
     */
    @Excel(name = "开户行名称")
    @ApiModelProperty(value = "开户行名称")
    private String depositBank;

    /**
     * 银行账户
     */
    @Excel(name = "银行账户")
    @ApiModelProperty(value = "银行账户")
    private String bankAccount;

    /**
     * 甲方联系人
     */
    @Excel(name = "甲方联系人")
    @ApiModelProperty(value = "甲方联系人")
    private String firstParty;

    /**
     * 通知甲方送达地址
     */
    @Excel(name = "通知甲方送达地址")
    @ApiModelProperty(value = "通知甲方送达地址")
    private String firstPartyAddress;

    /**
     * 通知甲方联系电话
     */
    @Excel(name = "通知甲方联系电话")
    @ApiModelProperty(value = "通知甲方联系电话")
    private String firstPartyPhone;

    /**
     * 甲方电子邮箱
     */
    @Excel(name = "甲方电子邮箱")
    @ApiModelProperty(value = "甲方电子邮箱")
    private String firstPartyEmali;

    /**
     * 甲方传真
     */
    @Excel(name = "甲方传真")
    @ApiModelProperty(value = "甲方传真")
    private String firstPartyFax;

    /**
     * 甲方QQ
     */
    @Excel(name = "甲方QQ")
    @ApiModelProperty(value = "甲方QQ")
    private String firstPartyQq;

    /**
     * 甲方微信
     */
    @Excel(name = "甲方微信")
    @ApiModelProperty(value = "甲方微信")
    private String firstPartyWechat;

    /**
     * 甲方邮政编码
     */
    @Excel(name = "甲方邮政编码")
    @ApiModelProperty(value = "甲方邮政编码")
    private String firstPartyPostalCode;

    /**
     * 乙方联系人
     */
    @Excel(name = "乙方联系人")
    @ApiModelProperty(value = "乙方联系人")
    private String secondParty;

    /**
     * 通知乙方送达地址
     */
    @Excel(name = "通知乙方送达地址")
    @ApiModelProperty(value = "通知乙方送达地址")
    private String secondPartyAddress;

    /**
     * 通知乙方联系电话
     */
    @Excel(name = "通知乙方联系电话")
    @ApiModelProperty(value = "通知乙方联系电话")
    private String secondPartyPhone;

    /**
     * 乙方电子邮箱
     */
    @Excel(name = "乙方电子邮箱")
    @ApiModelProperty(value = "乙方电子邮箱")
    private String secondPartyEmali;

    /**
     * 乙方传真
     */
    @Excel(name = "乙方传真")
    @ApiModelProperty(value = "乙方传真")
    private String secondPartyFax;

    /**
     * 乙方QQ
     */
    @Excel(name = "乙方QQ")
    @ApiModelProperty(value = "乙方QQ")
    private String secondPartyQq;

    /**
     * 乙方微信
     */
    @Excel(name = "乙方微信")
    @ApiModelProperty(value = "乙方微信")
    private String secondPartyWechat;

    /**
     * 乙方邮政编码
     */
    @Excel(name = "乙方邮政编码")
    @ApiModelProperty(value = "乙方邮政编码")
    private String secondPartyPostalCode;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "创建时间")
    private Date createdAt;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "更新时间")
    private Date updatedAt;

    /**
     * 创建人
     */
    @Excel(name = "创建人")
    @ApiModelProperty(value = "创建人")
    private Long createById;

    /**
     * 创建人名称
     */
    @Excel(name = "创建人名称")
    @ApiModelProperty(value = "创建人名称")
    private String createByName;

    /**
     * 更新人
     */
    @Excel(name = "更新人")
    @ApiModelProperty(value = "更新人")
    private Long updateById;

    /**
     * 更新人名称
     */
    @Excel(name = "更新人名称")
    @ApiModelProperty(value = "更新人名称")
    private String updateByName;

    /**
     * 租户id(0--平台用户 非0--正常租户)
     */
    @Excel(name = "租户id(0--平台用户 非0--正常租户)")
    @ApiModelProperty(value = "租户id(0--平台用户 非0--正常租户)")
    private Long tenantId;

    @ApiModelProperty(value = "公司id")
    private Long companyId;

    /**
     * 删除标志 1-是，0-否
     */
    @Excel(name = "删除标志 1-是，0-否")
    @ApiModelProperty(value = "删除标志 1-是，0-否")
    private Long isDeleted;

    /**
     * 1-未提交，2-审批中，3-审批通过，4-已驳回
     */
    @Excel(name = "1-未提交，2-审批中，3-审批通过，4-已驳回")
    @ApiModelProperty(value = "合同发起审核状态 1-未提交，2-审批中，3-审批通过，4-已驳回")
    private Long status;

    /**
     * 变更状态 1、未变更；2、未提交；3、审核中；4、审核通过；5、已退回
     */
    @ApiModelProperty(value = "变更状态 1、未变更；2、未提交；3、审核中；4、审核通过；5、已退回")
    private Long alterationState;

    @ApiModelProperty(value = "是否变更 1-否 2-是")
    private Long isAlter;

    @ApiModelProperty(value = "出租单位 1-本公司 2-代营公司")
    private Long isCompany;

    @ApiModelProperty(value = "归档状态 1-为归档 2-已归档")
    private Long pigeonhole;

    @ApiModelProperty(value = "起止日期 开始时间")
    private String beginTime;

    @ApiModelProperty(value = "起止日期 结束日期")
    private String endTime;

    //预警列表条件
    private Long warning;

    @ApiModelProperty(value = "剩余天数")
    private Integer residueDay;

    @ApiModelProperty(value = "变更说明")
    private String alterExplain;

    /** 押金管理 变更原因 */
    @Excel(name = "押金管理 变更原因")
    @ApiModelProperty(value = "押金管理 变更原因")
    private String depositRemark;

    /** 押金管理  决策依据id */
    @Excel(name = "押金管理  决策依据id")
    @ApiModelProperty(value = "押金管理  决策依据id")
    private String depositDecisionId;

    @ApiModelProperty(value = "押金变更 OA审批链接")
    private String oaDepositFile;

    @ApiModelProperty(value = "押金管理  决策依据集合")
    private List<CommonDecision> depositDecisionList = new ArrayList<>();

    /**  押金管理 退回时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = " 押金管理 退回时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = " 押金管理 退回时间")
    private Date backTime;

    /** 押金管理 审核状态 1-审核中 3-审核通过 4-已退回 */
    @Excel(name = "押金管理 审核状态 1-审核中 3-审核通过 4-已退回")
    @ApiModelProperty(value = "押金管理 审核状态 1-审核中 3-审核通过 4-已退回")
    private Long depositStatus;

    /** 押金管理 流程类型 1-押金收款 2-押金变更 3-押金退费 */
    @Excel(name = "押金管理 流程类型 1-押金收款 2-押金变更 3-押金退费")
    @ApiModelProperty(value = "押金管理 流程类型 1-押金收款 2-押金变更 3-押金退费")
    private String depositType;

    /** 押金管理 收款时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "押金管理 收款时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "押金管理 收款时间")
    private Date payTime;

    @ApiModelProperty(value = "合同变更 决策依据")
    private String alterDecisionId;

    @ApiModelProperty(value = "合同申请附件集合")
    private List<ContractSponsorEnclosure> enclosureList = new ArrayList<>();

    @ApiModelProperty(value = "决策依据集合")
    private List<CommonDecision> commonDecisionList = new ArrayList<>();

    @ApiModelProperty(value = "合同变更 决策依据集合")
    private List<CommonDecision> commonDecisionList1 = new ArrayList<>();

    @ApiModelProperty(value = "历史变更")
    private List<ContractSponsorAlter> alterList = new ArrayList<>();

    @ApiModelProperty(value = "1-升序 2-降序")
    private Long rank;

    @ApiModelProperty(value = "续约状态  1-续约")
    private String contractExtension;

    @ApiModelProperty(value = "收款账期")
    private Long[] rentPeriods;

    private String oaFile;

    @ApiModelProperty(value = "资产集合")
    private List<Asset> assetList = new ArrayList<>();

    @ApiModelProperty(value = "合同分配 列表信息")
    private ContractBill contractBill;

    @ApiModelProperty(value = "合同账期集合")
    private List<ContractBill> contractBillList = new ArrayList<>();


    @ApiModelProperty(value = "累计已付金额")
    private BigDecimal paidMoney;

    @ApiModelProperty(value = "累计应付金额")
    private BigDecimal dealMoney;

    @ApiModelProperty(value = "OA环境token")
    private String token;

    @ApiModelProperty(value = "OA环境文本id")
    private String fileId;

    @ApiModelProperty(value = "合同文本")
    private String url;

    @ApiModelProperty(value = "OA当前登录人")
    private String loginName;


    @ApiModelProperty(value = "押金收款金额OA")
    private BigDecimal depositPayeeMoney;

    @ApiModelProperty(value = "押金收款凭证号OA")
    private String depositPayeeNum;

    @ApiModelProperty(value = "押金收款凭证文件OA")
    private String depositPayeeFile;

    @ApiModelProperty(value = "押金收款 OA审批文件链接")
    private String oaDepositPayeeFile;

    @ApiModelProperty(value = "押金收款 审批状态 1-审核中 3-审批通过 4-已退回")
    private Long depositPayeeStatus;


    @ApiModelProperty(value = "押金收款日期OA")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date depositPayeeTime;


    @ApiModelProperty(value = "押金退款金额OA")
    private BigDecimal depositRefundMoney;

    @ApiModelProperty(value = "押金退款凭证号OA")
    private String depositRefundNum;

    @ApiModelProperty(value = "押金退款凭证文件OA")
    private String depositRefundFile;

    @ApiModelProperty(value = "押金退款 OA审批文件链接")
    private String oaDepositRefundFile;

    @ApiModelProperty(value = "押金退款 审批状态 1-审核中 3-审批通过 4-已退回")
    private Long depositRefundStatus;


    @ApiModelProperty(value = "押金退款日期OA")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date depositRefundTime;




}
